package com.song.boot.springstudy.sort;

import java.util.Arrays;

/**
 * 快速排序算法实现类
 * 采用分治法思想，以首元素作为基准进行分区
 */
public class QuickSortV2 {

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        // 测试数组
        int[] testArray = {25, 6, 4, 10, 1, 3, 20,28,21, 27};
        System.out.println("排序前的数组: " + Arrays.toString(testArray));

        // 执行快速排序
        // 基准：最左
        int one = testArray[0];
        int j = 0;
        for (int i = 0; i < testArray.length; i++) {
            if (testArray[i] < one) {
                huanWeiZi(testArray, j, i );
                j++;
            }

            if (testArray[i] > one) {
                huanWeiZi(testArray, j, i );
                j++;
            }
        }


        // for (int i = 0; i < testArray.length; i++) {
        //
        //
        //     for (int i1 = 0; i1 < testArray.length; i1++) {
        //         if (testArray[i1] < testArray[i]) {
        //             huanWeiZi(testArray, i, i1 );
        //         }
        //     }
        // }





        // int j = 0;
        // for (int i = 0; i < testArray.length; i++) {
        //     // 如果大于在右边
        //     if (testArray[i] > one) {
        //         huanWeiZi(testArray, j, i );
        //     }
        //     else {
        //         // 小于在左边
        //         huanWeiZi(testArray,j,i);
        //     }
        //     j++;
        // }

        // 输出排序结果
        System.out.println("排序后的数组: " + Arrays.toString(testArray));
    }

    // 换位置
    private static void huanWeiZi(int[] arr,int i ,int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }



}
    